﻿#region Código Gerado Pela Fábrica de Software (Using)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using itau.im.entidade;
using EnterpriseLibraryWrapper;
#endregion

#region Código Gerado Pela Fábrica de Software (Namespace)
namespace itau.im.negocio
{
    #region Código Gerado Pela Fábrica de Software (Interface)
    
    [ServiceContract]
    public interface IGrupoParametrosBS
    {
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ParametroAtribuicao> ObterParametrosNaoAlocadosPorGrupoParametroVigente(int codigoGrupo);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ParametroAtribuicaoGrupoAlocacao> ObterParametrosAtribuicaoGrupoAlocacaoPorGrupoParametrosVigente(int codigoGrupo);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<DominioParametroAtribuicao> ObterDominiosParametroAtribuicaoPorGrupoVigente(int codigoGrupo);
                
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiro> ObterProdutosExcecaoPorGrupoParametrosVigente(int codigoGrupo);
        
        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ParametroAtribuicao> ObterParametrosAtribuicaoPorGrupoVigente(int codigoGrupo);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiroDerivado> ObterProdutosFinanceirosDerivadosExcecaoPorGrupoParametrosVigente(int codigoGrupo);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<GrupoParametroAtribuicao> ObterGruposDeParametros();

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        int ObterCodigoGrupoParametroAtribuicao(ProdutoFinanceiroDerivado produtoFinanceiroDerivado, DateTime dataInicioVigencia);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<RegraAtribuicaoCurva> ObterRegras(int codigoGrupo, DateTime dataInclusaoVigencia);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void CriarProdutoFinanceiroAlocacoes(int codigoGrupoParametros, IList<ProdutoFinanceiro> listaProdutosFinanceiros);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void CriarProdutoFinanceiroDerivadoAlocacoes(int codigoGrupoParametros, IList<ProdutoFinanceiroDerivado> listaProdutosFinanceirosDerivados);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        bool ValidaProdutoFinanceiroAlocacaoExistente(int codProdutoFinanceiroDerivado);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void RemoverGrupoParametroAtribuicao(int codigoGrupo);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void RemoverParametroAtribuicaoGrupoAlocacao(IList<ParametroAtribuicaoGrupoAlocacao> listaParametroAtribuicaoGrupoAlocacao);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void RemoverProdutoFinanceiroAlocacoes(int codigoGrupo, DateTime dataHoraFim);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        int CriarGrupoParametros(GrupoParametroAtribuicao grupoParametros);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiro> ObterProdutosFinanceirosNaoAlocados();

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiroDerivado> ObterProdutosFinanceirosDerivadosNaoAlocados();

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiro> ObterProdutosFinanceirosPorGrupoParametrosVigente(int codigoGrupo);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<ProdutoFinanceiroAlocacao> ObterProdutoFinanceiroAlocacaoPorGrupoParametro(int codigoGrupoParametro);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        IList<DominioParametroAtribuicao> ObterDominiosParametrosAtribuicaoPorGrupoVigente(int codigoGrupo);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void CriarParametroAtribuicaoGrupoAlocacoes(IList<ParametroAtribuicaoGrupoAlocacao> listaParametrosEndogenosAlocacao);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        int ObterNumeroParametroAtribuicaoGrupoAlocacaoPorCodigoParametro(int codigoParametro);

        [OperationContract]
        [FaultContract(typeof(WCFFaultContract))]
        void RemoverProdutoFinanceiroAlocacoesPorCodigoProdutoDerivado(IList<ProdutoFinanceiroAlocacao> listaProdutosFinanceirosAlocacao, DateTime dataHoraFim);
    }

    #endregion

}

#endregion
